第 1 小节:怎样在本职工作和开源项目间做好平衡

整天都在加班,哪有时间做开源?鱼和熊掌可以兼得吗?希望这篇内容可以给你答案

友情提示,本文主要针对那些个人开发者,不针对那些以开源计算 KPI 的企业或者企业员工或全职开源者。

开源不是工作,开源更多的是一种对自我能力、自我影响力或自我约束力的升华。在写这篇文章之前,我专门向多位开源圈的大佬请教过这个问题,大佬们给我的答案大部分意思都一样,总结一下就是:学会规划自己的时间,要明确工作是工作,开源是开源,开源一定是牺牲自己的业余时间去做的

工作能带给我们什么?

这儿归根结底需要从三方面说:

  1. 经济上:物质需求的满足、对未来发展的预期等
  2. 社会上:团队友谊、社会认可和社会地位、责任感等
  3. 心理上:投入感、自我肯定、被信赖感、支配感等

开源能带给我们什么?

  1. 在这你可以找到一群志同道合的朋友,一起分享编写编码的乐趣,找到属于自己的共同点。
  2. 你可以在开源项目中磨砺自身,提升自身的沟通能力,与代码编写技巧。更能丰富你的阅历,让你知道如何作为团队的一部分,和其他人一起协作开发一个项目。而且由于代码公开,这些项目可以作为你技能熟练度的佐证,有助于自身建立个人品牌。
  3. 开源可以让你站在其他人的视角上面看待一个问题,人无完人,一个人的思维总归还是会有一定的局限性。对于一个技术难点我们不必死缠烂打,不妨看看别人的代码,拓宽自己的思路,打破自身思维所带来的局限性,取人之长,补己之短。

个人能力锻炼和提升:

  1. 专业技术能力;
  2. 架构设计和模块化思维能力;
  3. 团队精神和协作能力;
  4. 文档习惯和写作能力;
  5. 需求理解能力;

精神生活丰富有趣味:

  1. 参与大型团队,比肩业内大佬;
  2. 增加交友机会,拓展社交范围;
  3. 帮人解决问题,自信成就彼此;
  4. 偶有项目奖励,内心喜不自禁;
  5. 个性创新不断,行业视角更广;

关于这部分详细内容,请参考 开源与个人技术成长个人为什么要参与开源贡献

  • 提升专业技术能力
  • 提升个人成就感和自信
  • 提升社区影响力与知名度
  • 丰富阅历、拓宽知识面
  • 结识更多领域的专家

亲身经历

在这儿,我不妨先给大家分享一些我的亲身经历:

以往我在面试开发者时必问的一点就是:你做没做过开源?如果面试者回答做过,我会继续问他为什么要做开源?开源能带给你什么?可悲的是大部分(几乎可以说全部)开发者一致的回答是:一直想做但平常没有时间做。

由此可见一斑,大部分人对于开源的态度都是“我工作忙,没有时间”,试问你真的是没有时间吗?容我斗胆猜测目前国内开发者的状态:

  1. 965,工作轻松有,还能结伴撮顿酒。
  2. 996,工作累成狗,回家倒床就一宿。
  3. 007,风萧萧兮易水寒,壮士一去兮不复还。

如果你是第三种状态,那么恭喜你,你不需要再看下去了,赶紧关掉电脑然后祈祷一下直接上床休息吧。如果你不属于最后一种,那么不妨发自内心的去问一下自己:

吾日三省

在工作的时候,你真的是在认真工作吗?是真的全身心的投入到工作中了吗?

  • 你是否还记得早上一个小时喝茶上厕所的时候?
  • 你是否还记得在各个群里吹天砍地、斗图“蹦迪”的时候?
  • 你是否还记得你在工位上追着没追完的剧的时候?
  • 你是否还记得……

我想你可能是选择性的忘记了。

在工作之余,你真的没有多余时间吗?是真的工作到累的回到家倒头就睡吗?

  • 你是否还记得晚上回家组队开黑的时候?
  • 你是否还记得周六日陪女朋友逛街游玩的时候(噢,对不起,程序员怎么可能还有女朋友)?
  • 你是否还记得你和你的朋友把酒言欢 K 歌跳舞的时候?
  • 你是否还记得……

我想你也可能是选择性的忘记了。

希望经过上面的“反省”,各位开发者能对自己的实际情况有一个比较客观的认识。

怎么办?

OK,言归正传,书接上文。我们应该怎么办?应该怎么做到两者之间的平衡?

工作第一(分清主次)

作为一名程序员或者说作为任何一个人,首先工作才是第一位的,因为工作能够保证你物质上的基本满足,然后才是其他的。

在工作的时候,还要尽可能的高效高质量高投入的完成自己的工作,务必要做到有的放矢。

这个道理很简单,我们越高效的完成工作,那么留给我们的空余时间就会越多,我们就可以利用这些空余时间去学习新技术提高自己的能力或者参与开源项目(诶,你这糟老头子,说了满篇废话,终于点到题上了)。

友情提示:有些公司明令禁止不得在工作时间利用公司资源搞其他的东西。这个范围是很宽泛的,既包括兼职又包括开源(开源可以理解成一个短期或者基本无收入的“兼职”)。这一点不在本文的讨论范围内,不做过多解释。

提高自控力

有一些同志时间表安排的满满登登,各种规划做的妥妥当当,但真到了执行阶段,就会生出诸多理由自发或者被自发的拒绝自己已安排好的剧本(反正你是导演,你想咋编就咋编),总是控制不住自己去做一些无意义的事情。

要想做好在工作和开源之间的平衡,一定要尽可能的提高自己的自控力,要明白自己该在什么时候做什么东西。

一个自控力优秀的人,在对待开源和工作时会做到游刃有余。

必要的牺牲

为什么会加上这一点?很简单,开源不是工作,开源是利用自己业余的时间,做一些自己喜欢的事。作为程序员,要持续不断的学习,包括在工作中积累工作经验、锻炼技术能力,同时也包括利用业余时间去研究技术,学习理论。开源能带给开发者的不仅仅是技术上的提升,更多的是能找到一批志同道合的伙伴,一起为了一个目标努力实现,这个过程是非常享受的。但这有一个必要的前提就是要在适当的时候牺牲自己的休息时间。

欲带皇冠,必承其重!

家人的支持

除了工作与项目之间的平衡以外,家人的支持也尤为重要。参与开源项目必然会占用自己原本就非常有限的时间,而家人是我们身边最亲近的人,在做出决策前,请尝试寻求他们的支持与认可。清晰表达自己的想法与意愿,阐述可能造成的影响,最重要的一点:保证自己与家人的相处时间

开源不是工作,虽然会占用到个人时间,但是毕竟不会像公司一样要求你每日上班打卡,因此,合理安排时间,应该可以得到较为妥当的方案。比如:每个周末留出半天或一天的时间陪伴家人。

开源是为了世界更加美好!所以,在拥抱开源的同时,请不要放弃身边的美好!

开源的选题

做开源时,一定要明确所选的开源选题或者想参与的开源项目是否和本职工作的业务之间存在冲突,举例说明:

你公司主要业务为“数据库服务”相关,而你的开源项目或者参与的开源项目也是属于“数据库服务”相关的业务,此时,你就需要明确你的开源和你公司的业务间 是否存在冲突或者是竞争关系

如果存在竞争关系,并且你还想继续做这方面的开源,那你一定要 书面取得公司的同意(授权) ,否则你可能面临一定的法律风险。

该条建议也是“如何平衡本职工作和开源项目”的最重要的,因为是 和你切身利益相关

友情提示, 不要存在侥幸心理

总结

要想在工作和开源间做好平衡,关键以下三点:

  1. 工作第一(分清主次)
  2. 提高自控力
  3. 必要的牺牲
  4. 家人的支持
  5. 开源的选题

结语

这篇文章是我在工作之外,利用自己的业余时间,前前后后构思了好久才写完的。内容可能不尽人意,各位看官暂且一阅,欢迎指正欢迎交流。

本部分内容贡献者

yadong.zhang阿基米东雪山凌狐沈唁ttyhtg西狩zeroTwozeroTwo